class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def min_depth(root):
    """
    二叉树最小深度：层序遍历时，第一个叶子节点的深度即为最小深度
    root：二叉树根节点
    """
    if not root:
        return 0
    from collections import deque
    queue = deque([(root, 1)])  # (节点, 深度)
    while queue:
        node, depth = queue.popleft()
        # 叶子节点，返回当前深度
        if not node.left and not node.right:
            return depth
        if node.left:
            queue.append((node.left, depth + 1))
        if node.right:
            queue.append((node.right, depth + 1))

# 测试
root = TreeNode(3, left=TreeNode(9), right=TreeNode(20, left=TreeNode(15), right=TreeNode(7)))
print(min_depth(root))  # 输出：2（3→9 或 3→20 均为2层）